package org.spark.core.action.java;

import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.spark.sparkUtil.SparkJavaContextUtil;

import java.util.Arrays;
import java.util.List;

/**
 * 功能概述:
 * Datetime:    2020/5/28   19:21
 * Author:   某人的目光
 */
public class SaveAsTextFile {
    public static void main(String[] args) {
        JavaSparkContext sc = SparkJavaContextUtil.getSparkStart("SaveAsTextFile");
        // 有一个集合，里面有1到10,10个数字，现在要对10个数字进行累加
        List<Integer> numberList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        JavaRDD<Integer> numbers = sc.parallelize(numberList);

        // 使用map操作将集合中所有数字乘以2
        JavaRDD<Integer> doubleNumbers = numbers.map(

                new Function<Integer, Integer>() {

                    private static final long serialVersionUID = 1L;

                    public Integer call(Integer v1) throws Exception {
                        return v1 * 2;
                    }

                });

        // 直接将rdd中的数据，保存在HFDS文件中
        // 但是要注意，我们这里只能指定文件夹，也就是目录
        // 那么实际上，会保存为目录中的/double_number.txt/part-00000文件
        doubleNumbers.saveAsTextFile("hdfs://spark1:9000/double_number.txt");

        // 关闭JavaSparkContext
        sc.close();
    }
}
